#!/usr/bin/env python3
"""
股票分析系统使用示例
演示如何使用修改后的系统获取不同周期的K线数据并计算技术指标
"""

import sys
import os
import time
from stock_analyzer import analyze_stock, save_analysis_result, print_data_summary

def demo_analysis():
    """演示分析功能"""
    print("🚀 股票K线数据分析系统演示")
    print("=" * 60)
    
    # 测试用例：不同市场、不同周期
    test_cases = [
        # (股票代码, 周期, 描述)
        ('AAPL', '60分钟', '苹果公司 - 60分钟线'),
        ('MSFT', '日线', '微软公司 - 日线'),
        ('TSLA', '周线', '特斯拉 - 周线'),
        ('NVDA', '月线', '英伟达 - 月线'),
    ]
    
    results = []
    
    for symbol, period, description in test_cases:
        print(f"\n📊 正在分析: {description}")
        print("-" * 40)
        
        try:
            # 执行分析
            start_time = time.time()
            df = analyze_stock(symbol, period)
            elapsed = time.time() - start_time
            
            if df is not None and not df.empty:
                print(f"✅ 分析成功，耗时: {elapsed:.2f}秒")
                
                # 打印摘要
                print_data_summary(df, symbol, period)
                
                # 保存结果
                filename = save_analysis_result(df, symbol, period)
                
                results.append({
                    'symbol': symbol,
                    'period': period,
                    'description': description,
                    'success': True,
                    'filename': filename,
                    'data_count': len(df),
                    'elapsed': elapsed
                })
                
                print(f"📁 文件已保存: {filename}")
            else:
                print(f"❌ 分析失败: {description}")
                results.append({
                    'symbol': symbol,
                    'period': period,
                    'description': description,
                    'success': False,
                    'filename': None,
                    'data_count': 0,
                    'elapsed': elapsed
                })
        
        except Exception as e:
            print(f"❌ 分析出错: {e}")
            results.append({
                'symbol': symbol,
                'period': period,
                'description': description,
                'success': False,
                'filename': None,
                'data_count': 0,
                'elapsed': 0
            })
        
        # 添加延迟避免API限制
        time.sleep(1)
    
    # 打印总结报告
    print_summary_report(results)

def print_summary_report(results):
    """打印总结报告"""
    print("\n" + "=" * 80)
    print("📋 分析总结报告")
    print("=" * 80)
    
    successful = [r for r in results if r['success']]
    failed = [r for r in results if not r['success']]
    
    print(f"总计分析: {len(results)} 个标的")
    print(f"成功: {len(successful)} 个")
    print(f"失败: {len(failed)} 个")
    
    if successful:
        print(f"\n✅ 成功分析的标的:")
        for result in successful:
            print(f"  • {result['description']}")
            print(f"    数据量: {result['data_count']} 条")
            print(f"    耗时: {result['elapsed']:.2f}秒")
            print(f"    文件: {result['filename']}")
            print()
    
    if failed:
        print(f"\n❌ 失败的标的:")
        for result in failed:
            print(f"  • {result['description']}")
    
    print("\n💡 使用建议:")
    print("1. 生成的CSV文件可以用Excel打开查看")
    print("2. 文件包含完整的K线数据和技术指标")
    print("3. 可以根据LONG_SIGNAL和SHORT_SIGNAL列查看交易信号")
    print("4. 技术指标包括: MA均线、RSI、MACD、布林带、KDJ等")
    
    print("\n🔧 如果遇到问题:")
    print("1. 检查网络连接")
    print("2. 确认股票代码格式正确")
    print("3. 查看日志信息了解详细错误")
    
    print("=" * 80)

def interactive_mode():
    """交互模式"""
    print("🎯 交互模式 - 手动输入股票代码和周期")
    print("=" * 50)
    
    valid_periods = ['60分钟', '日线', '周线', '月线']
    
    while True:
        try:
            print("\n请输入分析参数 (输入 'quit' 退出):")
            
            # 获取股票代码
            symbol = input("股票代码: ").strip()
            if symbol.lower() == 'quit':
                break
            
            if not symbol:
                print("❌ 股票代码不能为空")
                continue
            
            # 获取周期
            print(f"支持的周期: {', '.join(valid_periods)}")
            period = input("K线周期: ").strip()
            
            if period not in valid_periods:
                print(f"❌ 不支持的周期，请选择: {', '.join(valid_periods)}")
                continue
            
            # 执行分析
            print(f"\n🔄 正在分析 {symbol} [{period}]...")
            df = analyze_stock(symbol, period)
            
            if df is not None and not df.empty:
                print_data_summary(df, symbol, period)
                filename = save_analysis_result(df, symbol, period)
                print(f"\n✅ 分析完成！文件已保存: {filename}")
            else:
                print("\n❌ 分析失败，请检查股票代码")
        
        except KeyboardInterrupt:
            print("\n\n👋 再见！")
            break
        except Exception as e:
            print(f"\n❌ 出错: {e}")

def main():
    """主程序"""
    print("🎉 欢迎使用股票K线数据分析系统")
    print("支持周期: 60分钟、日线、周线、月线")
    print("=" * 60)
    
    if len(sys.argv) > 1:
        mode = sys.argv[1].lower()
    else:
        print("请选择运行模式:")
        print("1. demo - 运行演示分析")
        print("2. interactive - 交互模式")
        print("3. help - 显示帮助")
        mode = input("\n请输入模式 (demo/interactive/help): ").strip().lower()
    
    if mode == 'demo':
        demo_analysis()
    elif mode == 'interactive':
        interactive_mode()
    elif mode == 'help':
        print_help()
    else:
        print("❌ 无效的模式，请选择: demo, interactive, help")
        sys.exit(1)

def print_help():
    """显示帮助信息"""
    help_text = """
📖 股票K线数据分析系统帮助

🎯 功能特点:
• 支持多个数据源: Yahoo Finance, AKShare, Tushare
• 支持4种K线周期: 60分钟、日线、周线、月线
• 自动计算技术指标: MA、RSI、MACD、布林带、KDJ
• 生成交易信号: 多头信号、空头信号
• 数据验证和清洗
• 结果保存为CSV格式

📊 支持的市场:
• 美股: AAPL, MSFT, TSLA, NVDA 等
• A股: 600000.SH, 000001.SZ 等
• 港股: 0700.HK, 9988.HK 等
• 期货: RB9999, AU9999 等

🚀 使用方法:
1. 直接分析: python stock_analyzer.py AAPL 日线
2. 演示模式: python example_usage.py demo
3. 交互模式: python example_usage.py interactive

📁 输出文件:
• 文件名格式: {股票代码}_{周期}_{时间戳}_analysis.csv
• 包含完整的K线数据和技术指标
• 可用Excel等工具打开查看

⚙️ 配置文件:
• config.py - 系统配置参数
• 可修改数据源、指标参数等

🔧 故障排除:
• 检查网络连接
• 确认股票代码格式
• 查看日志文件了解详细错误
"""
    print(help_text)

if __name__ == "__main__":
    main()
